#define  _CRT_SECURE_NO_WARNINGS 1
//#include"head.h"

//int main() 
//{
//	//int n = 0;
//	//n = 100;
//	//printf("%d\n", n);
//
//	//const int m = 0;//常变量，是变量，但具有常属性（不变的属性）
//	//m = 100;
//	//printf("%d\n", m);
//	//变量  /  常量
//	//在C语言中m是常变量，但在C++中m是常量
//
//
//
//	int m = 0;
//	int arr[m];//报错：表达式必须是常量值
//
//	const int n = 0;
//    int arr1[n];//错误：表达式必须是常量值
//	//说明C语言中，const修饰后依旧是是变量
//
//	return 0;
//}


//int main()
//{
//	const int n = 0;
//	//n = 100;
//	int* p = &n; //你的电脑仍然不允许修改
//    *p = 100;
//    printf("%d\n", n);
//
//	return 0;
//}



//const修饰指针变量
//1、const放在 * 左边
// 限制的是指针变量指向的内容，不能通过指针变量p来改变*p的内容
// 但p的内容可以改变，p可以指向其他变量
// 
//2、const放在 * 右边
// 限制的是p这个指针变量，p的内容不能被修改，也就是p不能指向其他变量了
// 但*p的内容可以改变
// 
//3、const放在 * 左边和 * 右边
// 既不能通过指针变量p来改变*p的内容，也不能通过p来改变p的指向
// 

//int main()
//{
//	const int n = 0;
//	const int* p = &n;//const放在 * 左边，*p的内容不能被修改，但p的指向可以修改
//    //等价：int const* p = &n;
//
//	int m = 100;
//	//*p = 100;//error
//    p = &m;//ok
//
//	printf("%d\n", *p);
//
//	return 0;
//}

//int main()
//{
//	const int n = 0;
//	int* const p = &n;
//
//	int m = 100;
//	*p = 100;//ok
//	//p = &m;//error
//
//	printf("%d\n", *p);
//
//	return 0;
//}